#ifndef _SAMPLE_H__
#define _SAMPLE_H__

#include <stdio.h>
#include <stdlib.h>

/** 
 * @name 缓冲区最大长度
 * @{
 */
#define MAX_BUF_LEN 255
 /** @}*/

/**
 * 统计步骤数\n
 * 全局变量
 */
static int count = 0;

/** sample结构体，用来保存节点信息*/
typedef struct sample{
	int  data;   /**< 数据信息*/
	char *name;  /**< 节点名称*/
	struct sample *next;/**< 保存下一个节点的地址*/
} sample;

/**
 * 测试函数
 * @param [in] file 文件名称
 * @retval 0 表示文件名称为空
 * @retval 1 表示文件名称不为空
 * @note 对函数返回值进行判断，为0则不能打开
 */
int test(char *file)
{
	if (NULL == file)
		return 0;
	else
		return 1;
}

/**
 * 打开文件
 * @param [in] name 文件名称
 * @param [in] type 打开文件的方式，只能输入以下参数
 * -# w:以只写方式打开
 * -# r:以只读方式打开
 * -# a:打开二进制文件
 * @return 返回文件句柄
 * - -1表示打开文件失败
 * @pre name 变量必须使用test函数进行检测
 * @par 实例:
 * @code
   //检测文件名是否为空
	 int result = test(name)
 * @endcode
 */
int open_file(char *name, char type)
{
	FILE *fp = NULL;
	fp = fopen(name, type);

	if (fp == NULL)
		return -1;
	else
		return fp;
}

/**
 * @param file_handle 打开的文件句柄
 * @retval 0 关闭句柄失败
 * @retval 1 关闭句柄成功
 * @see 函数 ::open_file
 * @deprecated 由于特殊原因，将来的版本中可能进行修改
 */
int close_file(int file_handle)
{
	if (!file_handle)
		return 0;
	else
		close(file_handle);

	return 1;
}

#endif /* _SAMPLE_H__ */

